signal.signal(signal.SIGINT, signal.SIG_DFL)
Sur un Debian Buster tout frais, en cas de error while loading shared libraries: libQt5Core.so.5: cannot open shared object file: No such file or directory
, il faut exécuter : sudo strip --remove-section=.note.ABI-tag /usr/lib64/libQt5Core.so.5
QVariantMap aiaValue = aia.value().toMap();
QCOMPARE(aiaValue.keys(), QList
QString ocsp = aiaValue[QStringLiteral("OCSP")].toString();
Le 3ème argument d'un QObject::connect (le contexte) peut être très utile pour éviter les crash en cas de destruction du pointeur visé dans cet argument. Ou en cas de connexion inter-threads.
On peut ajouter une version de Qt sur sa machine grâce à qtchooser
:
qtchooser -install 5.8 /opt/Qt/5.8.0/bin/qmake
qmake -qt5.8 -v
Luckily, the spin box appearance can be changed by Style Sheet.
To get “Wheel Diameter” style spin box, use following style sheet:
QSpinBox { border: 3px inset grey; }
QSpinBox::up-button { subcontrol-position: left; width: 40px; height: 35px;}
QSpinBox::down-button { subcontrol-position: right; width: 40px; height: 35px;}
To get “Pulses per Revolution” style spin box, use following style sheet:
QSpinBox { border: 3px outset grey;padding-right: 40px;}
QSpinBox::up-button { subcontrol-position: right; right: 40px; width: 40px; height: 35px;}
QSpinBox::down-button { subcontrol-position: right; width: 40px; height: 35px;}
To get “Count” style spin box, use following style sheet:
QSpinBox { border: 3px groove gray}
QSpinBox::up-button { subcontrol-position: top right; width: 40px; height: 19px;}
QSpinBox::down-button { subcontrol-position: bottom right; width: 40px; height: 19px;}
Un autre post sur les QThread. Quand on connaît un tantiner le sujet, on peut commencer par celui-là pour remettre les pendules à l'heure.
When adding some files to INSTALLS, they are stripped if they are excecutables.
To avoid using strip, you can update "QMAKE_STRIP" variable and force stripping executables one by one using ".extra":
target.extra = strip $${DESTDIR}/$(TARGET)
QMAKE_STRIP = echo # Avoid striping unwanted files (which will not work)
applibs.files = $${DESTDIR}/*.so*
applibs.path = $$EXPORT_LIBPATH
INSTALLS += applibs
Un autre post sur les QThread.
Hier, j'ai releasé la v0.2.6 de Qompoter, a C++/Qt dependency manager. Outre les améliorations apportées au truc (recherche récursive des paquets, numéros de versions flous du genre v1.*, recherche des paquets dans Inqlude), cela m'a aussi permis de découvrir les scripts d'auto-complémetion Bash ! Et je surkiffe taper qompoter tab tab
et voir la liste des actions possibles apparaître "install export inqlude jsong". C'est beau Linux.
Qompoter a atteint un niveau de maturité suffisant pour les petits projets, alors n'hésitez pas ! Vos retours sont les bienvenues.
Très pratique le fichier .qmake.conf.
Oui, un framework Web en Qt.
Premiers essais de CMake aujourd'hui :-) Depuis le temps que je souhaitais m'y frotter.
J'aimerai bien que mon petit projet Qompoter (https://github.com/Fylhan/qompoter) sache faire du qmake et du CMake
S seulement on pouvait parler d'avantage d'inqlude !
ça commence à dater, mais c'est vital pour faire une configuration avancée via qmake.
Another one: http://paulf.free.fr/undocumented_qmake.html
Voilà qui est encore mieux !!!
OCTAVE_FILES = $$files($${PWD}/scripts/*.m)
copy_files.name = Copy scripts
copy_files.input = OCTAVE_FILES
copy_files.output = $${OUT_PWD}/data/${QMAKE_FILE_BASE}${QMAKE_FILE_EXT}
copy_files.commands = ${COPY_FILE} ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT}
copy_files.CONFIG += no_link target_predeps
QMAKE_EXTRA_COMPILERS += copy_files
copydata.commands = $(COPY_DIR) $$PWD/data $$OUT_PWD
first.depends = $(first) copydata
export(first.depends)
export(copydata.commands)
QMAKE_EXTRA_TARGETS += first copydata
Edit : encore mieux -> http://links.la-bnbox.fr/?kqGppw
Cannot find -lGL ? sudo apt-get install libgl1-mesa-dev
Cette bibliothèque Qt pour lancer un serveur ou un client HTTP semble idéale (licence MIT). Plus aboutie que QHttpServer (https://github.com/nikhilm/qhttpserver, licence MIT aussi).
ça fait plusieurs développeurs Node.js que je vois aussi faire du C++ avec beaucoup de talent. C'est bien les gars ;-)
Voilà qui est bien pratique ! Il faut que je teste si une même génération fonctionne pour Linux et Windows, ou s'il y a des liens absolus...
Premier article d'une série sur les tests en Qt / C++.
QList<QMdiSubWindow > subWindows = ui->mdiArea->subWindowList();
QMdiSubWindow mySubWindow = subWindows.at(0);
mySubWindow->setWindowIcon(QIcon());
class Switch : public State
{
public:
int a;
};
QSharedPointer
QSharedPointer
C'est mieux que (Switch*)myState.data() non ?
Inqlude: http://inqlude.org/
Qt Apps : http://qt-apps.org/
Site officiel : http://qt-project.org/wiki/Category:Add-ons
Sur Github : https://github.com/search?nwo=0TheFox0%2FOpenChart&p=7&q=qt+plugin&ref=cmdform&search_target=global&type=Repositories
Le concept de lock-free programming est vraiment intéressant : empêcher les possibilités de blocages, ou les erreurs lors de l'utilisation d'une mémoire partagée entre plusieurs threads. L'idée étant de ne pas utiliser de mutex, et soit de séquentialiser l'accès à la mémoire partagée, soit d'utiliser des petites opérations atomiques (qui seront exécutée sans interruptions).
Il n'est pas tellement vraisemblable de créer un gros programme lock-free, l'idée est plutôt de rester pragmatique et de faire interagir plusieurs parties lock-free entres elles.
Le gain en performance par rapport à des mutex est assez flagrant. Et c'est à mettre en place pour coder efficacement sur du multi-processeur. Mais les compétences pour une mise en œuvre correcte sont aussi plus grandes.
"So keep mutexes, unless you have a lot of lock contention or are looking for a challenge."
Une autre ressource sur le sujet :
http://woboq.com/blog/introduction-to-lockfree-programming.html
Et comment gérer des opérations atomiques en Qt :
http://qt-project.org/doc/qt-5/qatomicint.html
"When you move a parent QObject, all its children are automatically moved too.
Remember though that member variables do not automatically become children; the parent-child relationship must be set by either:
J'ai comme le sentiment que cette remarque devrait être beaucoup plus visible dans les tutoriels sur les threads Qt !!!
Une définition assez claire de "thread-safe" et "reentrant".
Excellente explication sur la GUI Qt (widgets) : fenêtre, dock, etc...
Ok, je crois que je vais me coltiner ça.
Apparement, voici la liste des DLL nécessaires pour faire tourner un programme sous Qt5 :
Des bibliothèques (et exemples d'applications) sous Qt pouvant s'avérer utiles à l'occasion.
En attendant de détailler mes bidouilles, ou de tester des bibliothèques tierces, voici au moins un petit état de l'art de ce que j'ai trouvé pour dessiner des graphiques / courbes / histogrammes en Qt.
Utilisation avancée de qmake, notamment la gestion des variables. Voilà ce que je cherchais depuis quelques temps...
Du coup, j'en ai fait un article :-) J'en profite pour ajouter pas mal d'autres erreurs que j'ai rencontré avec les signaux / slots de Qt.